#ifndef FACTORY_HPP
#define FACTORY_HPP

//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <map>

namespace Tools {

template <class Object, class Key=string> 
class Factory {
public:
	// Register an object
	void Register(Key key,Object* obj);
	// Create an object
	Object* Create(const Key& key);
private:
	std::map<Key,Object*> m_map;
};

}

#include "Factory.inl"

#endif // FACTORY_HPP
